CASE SQL 式は条件を調べ、最初の条件が満たされた場合に値を返します (たとえば、if-then-else ステートメント)。 したがって、条件が満たされるとすぐに、命令は読み取りを停止し、結果を返します。 条件が満たされない場合は、ELSE 句の値が返されます。
ELSE の一部が存在せず、条件を満たさない場合は、NULL が返されます。
SELECT column1, column2, ...
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
WHEN conditionN THEN resultN
ELSE result
END
以下は、「Northwind」データベースの「OrderDetailss」テーブルのサンプルです。
OrderDetailID | OrderID | ProductID | Quantity |
---|---|---|---|
1 | 10248 | 11 | 12 |
2 | 10248 | 42 | 10 |
3 | 10248 | 72 | 5 |
4 | 10249 | 14 | 9 |
5 | 10249 | 51 | 40 |
次の SQL ステートメントは条件をチェックし、最初の条件が満たされた場合に値を返します。
Run SQLSELECT OrderID, Quantity,
CASE
WHEN Quantity > 30 THEN 'The quantity is greater than 30'
WHEN Quantity = 30 THEN 'The quantity is 30'
ELSE 'The quantity is under 30'
END AS QuantityText
FROM OrderDetails
この SQL クエリは、顧客を都市 (City) ごとに並べ替えます。ただし、都市が NULL の場合は、国 ( Country) で並べ替えます。
Run SQLSELECT CustomerName, City, Country
FROM Customers
ORDER BY
(CASE
WHEN City IS NULL THEN Country
ELSE City
END)